#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time    : 2021/4/11 
# @Author  : Mik
import os
import yaml
from common.base_path import rootDir
from configparser import ConfigParser
from common.logger import logger


class MyConfigParser(ConfigParser):
    # 重写 configparser 中的 optionxform 函数，解决 .ini 文件中的 键option 自动转为小写的问题
    def __init__(self, defaults=None):
        ConfigParser.__init__(self, defaults=defaults)

    def optionxform(self, optionstr):
        return optionstr


def load_yaml(file_path):
    """读取yaml并return"""
    logger.info("加载 {} 文件......".format(file_path))
    with open(file_path, mode='r', encoding='utf-8') as file:
        data = yaml.load(file, Loader=yaml.FullLoader)
    return data


def load_ini(section, file_path=rootDir + r'\config\config.ini'):
    """读取ini文件以键值对返回"""
    file_path = file_path.replace(r'\/'.replace(os.sep, ''), os.sep)
    logger.info("加载 {} 文件......".format(file_path))
    config = MyConfigParser()
    config.read(file_path, encoding="UTF-8")
    load_data = dict(config.items(section))
    return load_data


def load(file_name, path=rootDir):
    """在项目内读取指定文件"""
    ls = os.listdir(path)
    for i in ls:
        c_path = os.path.join(path, i)  # 将目录和文件名拼接
        if os.path.isdir(c_path):  # 如果是目录继续调用
            data = load(file_name, c_path)
            if data is not None:
                return data
        elif file_name == i:
            data = load_yaml(c_path)
            return data


# data= load('register.yaml')
# print(data)
# data= load('user_mange_api_data.yaml')
# print(data)